package org.bcos.contract.source;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Future;
import org.bcos.channel.client.TransactionSucCallback;
import org.bcos.web3j.abi.EventEncoder;
import org.bcos.web3j.abi.EventValues;
import org.bcos.web3j.abi.FunctionEncoder;
import org.bcos.web3j.abi.TypeReference;
import org.bcos.web3j.abi.datatypes.Address;
import org.bcos.web3j.abi.datatypes.Bool;
import org.bcos.web3j.abi.datatypes.DynamicArray;
import org.bcos.web3j.abi.datatypes.Event;
import org.bcos.web3j.abi.datatypes.Function;
import org.bcos.web3j.abi.datatypes.StaticArray;
import org.bcos.web3j.abi.datatypes.Type;
import org.bcos.web3j.abi.datatypes.Utf8String;
import org.bcos.web3j.abi.datatypes.generated.Bytes1;
import org.bcos.web3j.abi.datatypes.generated.Bytes32;
import org.bcos.web3j.abi.datatypes.generated.Uint256;
import org.bcos.web3j.crypto.Credentials;
import org.bcos.web3j.crypto.EncryptType;
import org.bcos.web3j.protocol.Web3j;
import org.bcos.web3j.protocol.core.DefaultBlockParameter;
import org.bcos.web3j.protocol.core.methods.request.EthFilter;
import org.bcos.web3j.protocol.core.methods.response.Log;
import org.bcos.web3j.protocol.core.methods.response.TransactionReceipt;
import org.bcos.web3j.tx.Contract;
import org.bcos.web3j.tx.TransactionManager;
import rx.Observable;
import rx.functions.Func1;

/**
 * Auto generated code.<br>
 * <strong>Do not modify!</strong><br>
 * Please use the <a href="https://docs.web3j.io/command_line.html">web3j command line tools</a>, or {@link org.bcos.web3j.codegen.SolidityFunctionWrapperGenerator} to update.
 *
 * <p>Generated with web3j version none.
 */
public final class ConsensusControl extends Contract {
    private static String BINARY = "606060405234156200000d57fe5b604051602080620031c5833981016040528080519060200190919050505b805b6200004c816200017c6401000000000262001ab0176401000000009004565b6200006b81620006dc6401000000000262001eb8176401000000009004565b5b50620001746200015a6000805490506200013d608060405190810160405280604181526020017f5b436f6e73656e737573436f6e74726f6c5d202323232323232323232063757281526020017f72656e74206167656e6379206c697374202323232323232323206c656e67746881526020017f3a0000000000000000000000000000000000000000000000000000000000000081525062000120620006e064010000000002620014ba176401000000009004565b6200071064010000000002620014d2179091906401000000009004565b620007536401000000000262001503179091906401000000009004565b620007b4640100000000026200153c176401000000009004565b5b5062001170565b6000600060008373ffffffffffffffffffffffffffffffffffffffff16141515620005f5576200025b62000241606060405190810160405280602c81526020017f5b436f6e73656e737573436f6e74726f6c5d2073797374656d50726f7879206c81526020017f6f6164207375636365737321000000000000000000000000000000000000000081525062000224620007e06401000000000262001714176401000000009004565b6200071064010000000002620014d2179091906401000000009004565b620007b4640100000000026200153c176401000000009004565b8291508173ffffffffffffffffffffffffffffffffffffffff16631b5f03a66000604051606001526040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018281038252600a8152602001807f4e6f6465416374696f6e00000000000000000000000000000000000000000000815250602001915050606060405180830381600087803b15156200030457fe5b6102c65a03f115156200031357fe5b505050604051805190602001805190602001805190505050905060008173ffffffffffffffffffffffffffffffffffffffff161415156200042d5762000408620003ee606060405190810160405280602b81526020017f5b436f6e73656e737573436f6e74726f6c5d204e6f6465416374696f6e206c6f81526020017f6164207375636365737321000000000000000000000000000000000000000000815250620003d1620007e06401000000000262001714176401000000009004565b6200071064010000000002620014d2179091906401000000009004565b620007b4640100000000026200153c176401000000009004565b6200042781620008106401000000000262001ebc176401000000009004565b6200050e565b6200050d620004f3608060405190810160405280604181526020017f5b436f6e73656e737573436f6e74726f6c5d204e6f6465416374696f6e206c6f81526020017f6164206661696c656421206d617920626520612077726f6e672061646472657381526020017f7300000000000000000000000000000000000000000000000000000000000000815250620004d6620009716401000000000262002001176401000000009004565b6200071064010000000002620014d2179091906401000000009004565b620007b4640100000000026200153c176401000000009004565b5b620005ef620005d5600080549050620005b8606060405190810160405280603481526020017f5b436f6e73656e737573436f6e74726f6c5d20696e69742061676e656379206681526020017f696e6973682e2063757272656e742073697a653a0000000000000000000000008152506200059b620007e06401000000000262001714176401000000009004565b6200071064010000000002620014d2179091906401000000009004565b620007536401000000000262001503179091906401000000009004565b620007b4640100000000026200153c176401000000009004565b620006d6565b620006d5620006bb608060405190810160405280604281526020017f5b436f6e73656e737573436f6e74726f6c5d2073797374656d50726f7879206c81526020017f6f6164206661696c656421206d617920626520612077726f6e6720616464726581526020017f73730000000000000000000000000000000000000000000000000000000000008152506200069e620009716401000000000262002001176401000000009004565b6200071064010000000002620014d2179091906401000000009004565b620007b4640100000000026200153c176401000000009004565b5b5b505050565b5b50565b620006ea620010b4565b6200070a6004620009a16401000000000262001738176401000000009004565b90505b90565b6200071a620010b4565b62000741828460200151620009f06401000000000262001783179091906401000000009004565b83602001819052508290505b92915050565b6200075d620010b4565b620007a2620007808362000a8a64010000000002620017ee176401000000009004565b8460200151620009f06401000000000262001783179091906401000000009004565b83602001819052508290505b92915050565b620007dc8160000151826020015162000be5640100000000026200193c176401000000009004565b5b50565b620007ea620010b4565b6200080a6080620009a16401000000000262001738176401000000009004565b90505b90565b600060006000839250600091505b8273ffffffffffffffffffffffffffffffffffffffff166370b607606000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050602060405180830381600087803b15156200088b57fe5b6102c65a03f115156200089a57fe5b505050604051805190508210156200096a578273ffffffffffffffffffffffffffffffffffffffff1663e0250c36836000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15156200092157fe5b6102c65a03f115156200093057fe5b5050506040518051905090506200095b8162000c24640100000000026200155e176401000000009004565b5b81806001019250506200081e565b5b50505050565b6200097b620010b4565b6200099b6010620009a16401000000000262001738176401000000009004565b90505b90565b620009ab620010b4565b620009b5620010b4565b82816000019063ffffffff16908163ffffffff1681525050602060405190810160405280600081525081602001819052508091505b50919050565b620009fa620010dd565b600060006000845186510160405180591062000a135750595b908082528060200260200182016040525b50935060208601925060208501915060208401905062000a5b8184885162000e606401000000000262001965176401000000009004565b62000a808651820183875162000e606401000000000262001965176401000000009004565b5b50505092915050565b62000a94620010dd565b600060006000600085141562000ae357604060405190810160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250935062000bdd565b600092508491505b600082111562000b1357600a8281151562000b0257fe5b049150828060010193505062000aeb565b8260ff1660405180591062000b255750595b908082528060200260200182016040525b5093506001830390505b600085111562000bdc576030600a8681151562000b5957fe5b06017f01000000000000000000000000000000000000000000000000000000000000000284828060019003935060ff1681518110151562000b9657fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8581151562000bd357fe5b04945062000b40565b5b505050919050565b6000600062000c0762000eaf64010000000002620019b2176401000000009004565b91506000600060006000600060006000898b8a2f90505b50505050565b600060016000836000191660001916815260200190815260200160002054141562000ca2576001600160008360001916600019168152602001908152602001600020819055506000805480600101828162000c809190620010f1565b916000526020600020900160005b839091909150906000191690555062000ccd565b6001600160008360001916600019168152602001908152602001600020600082825401925050819055505b62000e5c62000e426001600084600019166000191681526020019081526020016000205462000e25604060405190810160405280600781526020017f20636f756e743a0000000000000000000000000000000000000000000000000081525062000e0862000d4f8762000eb96401000000000262000f76176401000000009004565b62000deb606060405190810160405280602b81526020017f5b436f6e73656e737573436f6e74726f6c5d28696e20636f6e7472616374292081526020017f6164644e6f64655072693a00000000000000000000000000000000000000000081525062000dce620007e06401000000000262001714176401000000009004565b6200071064010000000002620014d2179091906401000000009004565b6200071064010000000002620014d2179091906401000000009004565b6200071064010000000002620014d2179091906401000000009004565b620007536401000000000262001503179091906401000000009004565b620007b4640100000000026200153c176401000000009004565b5b50565b60005b60208210151562000e8b57825184526020840193506020830192505b60208203915062000e63565b6001826020036101000a039050801983511681855116818117865250505b50505050565b6000601090505b90565b62000ec3620010dd565b62000ecd62001120565b60006000600062000edd62001120565b602060405180591062000eed5750595b908082528060200260200182016040525b50945060009350600092505b602083101562000fcd578260080260020a876001900402600102915060007f010000000000000000000000000000000000000000000000000000000000000002827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151562000fbe5781858581518110151562000f8557fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535083806001019450505b5b828060010193505062000f0a565b8360405180591062000fdc5750595b908082528060200260200182016040525b509050600092505b83831015620010a65784838151811015156200100d57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000281848151811015156200106757fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b828060010193505062000ff5565b8095505b5050505050919050565b604060405190810160405280600063ffffffff168152602001620010d762001134565b81525090565b602060405190810160405280600081525090565b8154818355818115116200111b578183600052602060002091820191016200111a919062001148565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b6200116d91905b80821115620011695760008160009055506001016200114f565b5090565b90565b61204580620011806000396000f300606060405236156100c3576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063045ccf7b146100c55780630b0f1162146101905780633a96fdd7146101c857806346bdca9a146102795780635328bfad1461032e5780635f4c1fbc1461038557806361fc6d1f146103bd578063842df465146103f95780639201de5514610423578063c5ce0634146104ce578063cfb519281461050a578063e3dc94b714610580578063f037c906146105f5575bfe5b34156100cd57fe5b6101076004808061080001906040806020026040519081016040528092919082604060200280828437820191505050505091905050610631565b6040518080602001828103825283818151815260200191508051906020019080838360008314610156575b80518252602083111561015657602082019150602081019050602083039250610132565b505050905090810190601f1680156101825780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561019857fe5b6101b260048080356000191690602001909190505061082b565b6040518082815260200191505060405180910390f35b34156101d057fe5b610263600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610843565b6040518082815260200191505060405180910390f35b341561028157fe5b610314600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610b10565b604051808215151515815260200191505060405180910390f35b341561033657fe5b61036b600480803590602001908201803590602001919091929080359060200190820180359060200191909192905050610b28565b604051808215151515815260200191505060405180910390f35b341561038d57fe5b6103a7600480803560001916906020019091905050610d02565b6040518082815260200191505060405180910390f35b34156103c557fe5b6103df600480803560001916906020019091905050610d28565b604051808215151515815260200191505060405180910390f35b341561040157fe5b610409610d55565b604051808215151515815260200191505060405180910390f35b341561042b57fe5b610445600480803560001916906020019091905050610f76565b6040518080602001828103825283818151815260200191508051906020019080838360008314610494575b80518252602083111561049457602082019150602081019050602083039250610470565b505050905090810190601f1680156104c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104d657fe5b6104ec6004808035906020019091905050611161565b60405180826000191660001916815260200191505060405180910390f35b341561051257fe5b610562600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611186565b60405180826000191660001916815260200191505060405180910390f35b341561058857fe5b6105906111b7565b60405180806020018281038252838181518152602001915080519060200190602002808383600083146105e2575b8051825260208311156105e2576020820191506020810190506020830392506105be565b5050509050019250505060405180910390f35b34156105fd57fe5b61061760048080356000191690602001909190505061121a565b604051808215151515815260200191505060405180910390f35b6106396119bc565b6106416119d0565b6000600061064d6119d0565b604060405180591061065c5750595b908082528060200260200182016040525b50935060009250600091505b604082101561074a5760007f01000000000000000000000000000000000000000000000000000000000000000286836040811015156106b457fe5b60200201517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151561073c5785826040811015156106f057fe5b6020020151848481518110151561070357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535082806001019350505b5b8180600101925050610679565b826040518059106107585750595b908082528060200260200182016040525b509050600091505b8282101561081e57838281518110151561078757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000281838151811015156107e057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b8180600101925050610771565b8094505b50505050919050565b60016020528060005260406000206000915090505481565b600061084d6119d0565b6108556119d0565b6000600086935085925083519150818351101561087157825191505b600090505b81811015610ab657828181518110151561088c57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110151561090757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191610156109a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9450610b06565b82818151811015156109b057fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181101515610a2b57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161115610aa75760019450610b06565b5b5b8080600101915050610876565b825184511015610ae8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9450610b06565b825184511115610afb5760019450610b06565b60009450610b06565b5b5b5050505092915050565b60006000610b1e8484610843565b1490505b92915050565b600060006000610bc1610bbc88889050610bae606060405190810160405280602d81526020017f5b436f6e73656e737573436f6e74726f6c5d20636f6e74726f6c20737461727481526020017f20696e666f2e6c656e6774683a00000000000000000000000000000000000000815250610ba06114ba565b6114d290919063ffffffff16565b61150390919063ffffffff16565b61153c565b60009150600090505b86869050811015610c48576000600160008989858181101515610be957fe5b9050602002013560001916600019166000191681526020019081526020016000205414158015610c2e575060008585838181101515610c2457fe5b9050602002013514155b15610c3a576001820191505b5b8080600101915050610bca565b610cd8610cd383610cc5606060405190810160405280602181526020017f5b436f6e73656e737573436f6e74726f6c5d20636f6e74726f6c20636f756e7481526020017f3a00000000000000000000000000000000000000000000000000000000000000815250610cb76114ba565b6114d290919063ffffffff16565b61150390919063ffffffff16565b61153c565b600080549050821015610cee5760009250610cf8565b60019250610cf8565b5b5050949350505050565b60006001600083600019166000191681526020019081526020016000205490505b919050565b6000610d3382611552565b1515610d425760009050610d50565b610d4b8261155e565b600190505b919050565b60006000610dcf606060405190810160405280602781526020017f5b436f6e73656e737573436f6e74726f6c5d202063757272656e74206167656e81526020017f63794c6973743a00000000000000000000000000000000000000000000000000815250610dc1611714565b6114d290919063ffffffff16565b50600090505b600080549050811015610f6d57610f5f610f5a60016000600085815481101515610dfb57fe5b906000526020600020900160005b50546000191660001916815260200190815260200160002054610f4c604060405190810160405280600181526020017f3a00000000000000000000000000000000000000000000000000000000000000815250610f3e610e86600088815481101515610e7157fe5b906000526020600020900160005b5054610f76565b610f30604060405190810160405280600181526020017f3a00000000000000000000000000000000000000000000000000000000000000815250610f228a610f14604060405190810160405280601381526020017f5b436f6e73656e737573436f6e74726f6c5d2000000000000000000000000000815250610f06611714565b6114d290919063ffffffff16565b61150390919063ffffffff16565b6114d290919063ffffffff16565b6114d290919063ffffffff16565b6114d290919063ffffffff16565b61150390919063ffffffff16565b61153c565b5b8080600101915050610dd5565b600191505b5090565b610f7e6119bc565b610f866119d0565b600060006000610f946119d0565b6020604051805910610fa35750595b908082528060200260200182016040525b50945060009350600092505b602083101561107f578260080260020a876001900402600102915060007f010000000000000000000000000000000000000000000000000000000000000002827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415156110715781858581518110151561103857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535083806001019450505b5b8280600101935050610fc0565b8360405180591061108d5750595b908082528060200260200182016040525b509050600092505b838310156111535784838151811015156110bc57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002818481518110151561111557fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b82806001019350506110a6565b8095505b5050505050919050565b60008181548110151561117057fe5b906000526020600020900160005b915090505481565b60006111906119d0565b8290506000815114156111a957600060010291506111b1565b602083015191505b50919050565b6111bf6119e4565b600080548060200260200160405190810160405280929190818152602001828054801561120f57602002820191906000526020600020905b815460001916815260200190600101908083116111f7575b505050505090505b90565b6000600060006112298461172c565b151561123857600092506114b3565b600160008560001916600019168152602001908152602001600020549150600082141561126857600192506114b3565b818060019003925050600082111561129f5781600160008660001916600019168152602001908152602001600020819055506113c7565b60016000856000191660001916815260200190815260200160002060009055600090505b6000805490508110156113115783600019166000828154811015156112e457fe5b906000526020600020900160005b505460001916141561130357611311565b5b80806001019150506112c3565b6000805490508110156113c6575b6001600080549050038110156113855760006001820181548110151561134157fe5b906000526020600020900160005b505460008281548110151561136057fe5b906000526020600020900160005b5081600019169055505b808060010191505061131f565b600060016000805490500381548110151561139c57fe5b906000526020600020900160005b506000905560008054809190600190036113c491906119f8565b505b5b6114ae6114a96001600087600019166000191681526020019081526020016000205461149b604060405190810160405280600781526020017f20636f756e743a0000000000000000000000000000000000000000000000000081525061148d61142f8a610f76565b61147f604060405190810160405280601b81526020017f5b436f6e73656e737573436f6e74726f6c5d2064656c4e6f64653a0000000000815250611471611714565b6114d290919063ffffffff16565b6114d290919063ffffffff16565b6114d290919063ffffffff16565b61150390919063ffffffff16565b61153c565b600192505b5050919050565b6114c2611a24565b6114cc6004611738565b90505b90565b6114da611a24565b6114f182846020015161178390919063ffffffff16565b83602001819052508290505b92915050565b61150b611a24565b61152a611517836117ee565b846020015161178390919063ffffffff16565b83602001819052508290505b92915050565b61154e8160000151826020015161193c565b5b50565b6000600190505b919050565b60006001600083600019166000191681526020019081526020016000205414156115d857600160016000836000191660001916815260200190815260200160002081905550600080548060010182816115b79190611a4b565b916000526020600020900160005b8390919091509060001916905550611603565b6001600160008360001916600019168152602001908152602001600020600082825401925050819055505b61171061170b600160008460001916600019168152602001908152602001600020546116fd604060405190810160405280600781526020017f20636f756e743a000000000000000000000000000000000000000000000000008152506116ef61166b87610f76565b6116e1606060405190810160405280602b81526020017f5b436f6e73656e737573436f6e74726f6c5d28696e20636f6e7472616374292081526020017f6164644e6f64655072693a0000000000000000000000000000000000000000008152506116d3611714565b6114d290919063ffffffff16565b6114d290919063ffffffff16565b6114d290919063ffffffff16565b61150390919063ffffffff16565b61153c565b5b50565b61171c611a24565b6117266080611738565b90505b90565b6000600190505b919050565b611740611a24565b611748611a24565b82816000019063ffffffff16908163ffffffff1681525050602060405190810160405280600081525081602001819052508091505b50919050565b61178b6119bc565b60006000600084518651016040518059106117a35750595b908082528060200260200182016040525b5093506020860192506020850191506020840190506117d581848851611965565b6117e486518201838751611965565b5b50505092915050565b6117f66119bc565b600060006000600085141561184357604060405190810160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509350611934565b600092508491505b600082111561187057600a8281151561186057fe5b049150828060010193505061184b565b8260ff166040518059106118815750595b908082528060200260200182016040525b5093506001830390505b6000851115611933576030600a868115156118b357fe5b06017f01000000000000000000000000000000000000000000000000000000000000000284828060019003935060ff168151811015156118ef57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8581151561192b57fe5b04945061189c565b5b505050919050565b600060006119486119b2565b91506000600060006000600060006000898b8a2f90505b50505050565b60005b60208210151561198e57825184526020840193506020830192505b602082039150611968565b6001826020036101000a039050801983511681855116818117865250505b50505050565b6000601090505b90565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b815481835581811511611a1f57818360005260206000209182019101611a1e9190611a77565b5b505050565b604060405190810160405280600063ffffffff168152602001611a45611a9c565b81525090565b815481835581811511611a7257818360005260206000209182019101611a719190611a77565b5b505050565b611a9991905b80821115611a95576000816000905550600101611a7d565b5090565b90565b602060405190810160405280600081525090565b6000600060008373ffffffffffffffffffffffffffffffffffffffff16141515611e0d57611b52611b4d606060405190810160405280602c81526020017f5b436f6e73656e737573436f6e74726f6c5d2073797374656d50726f7879206c81526020017f6f61642073756363657373210000000000000000000000000000000000000000815250611b3f611714565b6114d290919063ffffffff16565b61153c565b8291508173ffffffffffffffffffffffffffffffffffffffff16631b5f03a66000604051606001526040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018281038252600a8152602001807f4e6f6465416374696f6e00000000000000000000000000000000000000000000815250602001915050606060405180830381600087803b1515611bfa57fe5b6102c65a03f11515611c0857fe5b505050604051805190602001805190602001805190505050905060008173ffffffffffffffffffffffffffffffffffffffff16141515611cce57611cc0611cbb606060405190810160405280602b81526020017f5b436f6e73656e737573436f6e74726f6c5d204e6f6465416374696f6e206c6f81526020017f6164207375636365737321000000000000000000000000000000000000000000815250611cad611714565b6114d290919063ffffffff16565b61153c565b611cc981611ebc565b611d73565b611d72611d6d608060405190810160405280604181526020017f5b436f6e73656e737573436f6e74726f6c5d204e6f6465416374696f6e206c6f81526020017f6164206661696c656421206d617920626520612077726f6e672061646472657381526020017f7300000000000000000000000000000000000000000000000000000000000000815250611d5f612001565b6114d290919063ffffffff16565b61153c565b5b611e08611e03600080549050611df5606060405190810160405280603481526020017f5b436f6e73656e737573436f6e74726f6c5d20696e69742061676e656379206681526020017f696e6973682e2063757272656e742073697a653a000000000000000000000000815250611de7611714565b6114d290919063ffffffff16565b61150390919063ffffffff16565b61153c565b611eb2565b611eb1611eac608060405190810160405280604281526020017f5b436f6e73656e737573436f6e74726f6c5d2073797374656d50726f7879206c81526020017f6f6164206661696c656421206d617920626520612077726f6e6720616464726581526020017f7373000000000000000000000000000000000000000000000000000000000000815250611e9e612001565b6114d290919063ffffffff16565b61153c565b5b5b505050565b5b50565b600060006000839250600091505b8273ffffffffffffffffffffffffffffffffffffffff166370b607606000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050602060405180830381600087803b1515611f3657fe5b6102c65a03f11515611f4457fe5b50505060405180519050821015611ffa578273ffffffffffffffffffffffffffffffffffffffff1663e0250c36836000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515611fc957fe5b6102c65a03f11515611fd757fe5b505050604051805190509050611fec8161155e565b5b8180600101925050611eca565b5b50505050565b612009611a24565b6120136010611738565b90505b905600a165627a7a72305820c394b10543662f9fd280bc9a0d4a36b6cab56a932fff197871279ffef9863c120029";

    public static final String ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"x\",\"type\":\"bytes1[64]\"}],\"name\":\"byte64ToString\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"agencyCountMap\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_a\",\"type\":\"string\"},{\"name\":\"_b\",\"type\":\"string\"}],\"name\":\"compare\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_a\",\"type\":\"string\"},{\"name\":\"_b\",\"type\":\"string\"}],\"name\":\"equal\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"info\",\"type\":\"bytes32[]\"},{\"name\":\"num\",\"type\":\"uint256[]\"}],\"name\":\"control\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"agency\",\"type\":\"bytes32\"}],\"name\":\"lookupAgencyCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"agency\",\"type\":\"bytes32\"}],\"name\":\"addNode\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"printCurrentStateInLog\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"x\",\"type\":\"bytes32\"}],\"name\":\"bytes32ToString\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"agencyList\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"source\",\"type\":\"string\"}],\"name\":\"stringToBytes32\",\"outputs\":[{\"name\":\"result\",\"type\":\"bytes32\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lookupAgencyList\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"agency\",\"type\":\"bytes32\"}],\"name\":\"delNode\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"systemAddr\",\"type\":\"address\"}],\"payable\":false,\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"code\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"msg\",\"type\":\"string\"}],\"name\":\"LogMessage\",\"type\":\"event\"}]";

    private static String GUOMI_BINARY = "606060405234156200000d57fe5b604051602080620031c5833981016040528080519060200190919050505b805b6200004c816200017c6401000000000262001ab0176401000000009004565b6200006b81620006dc6401000000000262001eb8176401000000009004565b5b50620001746200015a6000805490506200013d608060405190810160405280604181526020017f5b436f6e73656e737573436f6e74726f6c5d202323232323232323232063757281526020017f72656e74206167656e6379206c697374202323232323232323206c656e67746881526020017f3a0000000000000000000000000000000000000000000000000000000000000081525062000120620006e06401000000000262001720176401000000009004565b6200071064010000000002620014d2179091906401000000009004565b620007536401000000000262001503179091906401000000009004565b620007b4640100000000026200153c176401000000009004565b5b5062001170565b6000600060008373ffffffffffffffffffffffffffffffffffffffff16141515620005f5576200025b62000241606060405190810160405280602c81526020017f5b436f6e73656e737573436f6e74726f6c5d2073797374656d50726f7879206c81526020017f6f6164207375636365737321000000000000000000000000000000000000000081525062000224620007e064010000000002620014ba176401000000009004565b6200071064010000000002620014d2179091906401000000009004565b620007b4640100000000026200153c176401000000009004565b8291508173ffffffffffffffffffffffffffffffffffffffff16631a129c016000604051606001526040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018281038252600a8152602001807f4e6f6465416374696f6e00000000000000000000000000000000000000000000815250602001915050606060405180830381600087803b15156200030457fe5b6102c65a03f115156200031357fe5b505050604051805190602001805190602001805190505050905060008173ffffffffffffffffffffffffffffffffffffffff161415156200042d5762000408620003ee606060405190810160405280602b81526020017f5b436f6e73656e737573436f6e74726f6c5d204e6f6465416374696f6e206c6f81526020017f6164207375636365737321000000000000000000000000000000000000000000815250620003d1620007e064010000000002620014ba176401000000009004565b6200071064010000000002620014d2179091906401000000009004565b620007b4640100000000026200153c176401000000009004565b6200042781620008106401000000000262001ebc176401000000009004565b6200050e565b6200050d620004f3608060405190810160405280604181526020017f5b436f6e73656e737573436f6e74726f6c5d204e6f6465416374696f6e206c6f81526020017f6164206661696c656421206d617920626520612077726f6e672061646472657381526020017f7300000000000000000000000000000000000000000000000000000000000000815250620004d6620009716401000000000262002001176401000000009004565b6200071064010000000002620014d2179091906401000000009004565b620007b4640100000000026200153c176401000000009004565b5b620005ef620005d5600080549050620005b8606060405190810160405280603481526020017f5b436f6e73656e737573436f6e74726f6c5d20696e69742061676e656379206681526020017f696e6973682e2063757272656e742073697a653a0000000000000000000000008152506200059b620007e064010000000002620014ba176401000000009004565b6200071064010000000002620014d2179091906401000000009004565b620007536401000000000262001503179091906401000000009004565b620007b4640100000000026200153c176401000000009004565b620006d6565b620006d5620006bb608060405190810160405280604281526020017f5b436f6e73656e737573436f6e74726f6c5d2073797374656d50726f7879206c81526020017f6f6164206661696c656421206d617920626520612077726f6e6720616464726581526020017f73730000000000000000000000000000000000000000000000000000000000008152506200069e620009716401000000000262002001176401000000009004565b6200071064010000000002620014d2179091906401000000009004565b620007b4640100000000026200153c176401000000009004565b5b5b505050565b5b50565b620006ea620010b4565b6200070a6004620009a16401000000000262001738176401000000009004565b90505b90565b6200071a620010b4565b62000741828460200151620009f06401000000000262001783179091906401000000009004565b83602001819052508290505b92915050565b6200075d620010b4565b620007a2620007808362000a8a64010000000002620017ee176401000000009004565b8460200151620009f06401000000000262001783179091906401000000009004565b83602001819052508290505b92915050565b620007dc8160000151826020015162000be5640100000000026200193c176401000000009004565b5b50565b620007ea620010b4565b6200080a6080620009a16401000000000262001738176401000000009004565b90505b90565b600060006000839250600091505b8273ffffffffffffffffffffffffffffffffffffffff16638fbfa12d6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050602060405180830381600087803b15156200088b57fe5b6102c65a03f115156200089a57fe5b505050604051805190508210156200096a578273ffffffffffffffffffffffffffffffffffffffff166377fa37c7836000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15156200092157fe5b6102c65a03f115156200093057fe5b5050506040518051905090506200095b8162000c24640100000000026200156a176401000000009004565b5b81806001019250506200081e565b5b50505050565b6200097b620010b4565b6200099b6010620009a16401000000000262001738176401000000009004565b90505b90565b620009ab620010b4565b620009b5620010b4565b82816000019063ffffffff16908163ffffffff1681525050602060405190810160405280600081525081602001819052508091505b50919050565b620009fa620010dd565b600060006000845186510160405180591062000a135750595b908082528060200260200182016040525b50935060208601925060208501915060208401905062000a5b8184885162000e606401000000000262001965176401000000009004565b62000a808651820183875162000e606401000000000262001965176401000000009004565b5b50505092915050565b62000a94620010dd565b600060006000600085141562000ae357604060405190810160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250935062000bdd565b600092508491505b600082111562000b1357600a8281151562000b0257fe5b049150828060010193505062000aeb565b8260ff1660405180591062000b255750595b908082528060200260200182016040525b5093506001830390505b600085111562000bdc576030600a8681151562000b5957fe5b06017f01000000000000000000000000000000000000000000000000000000000000000284828060019003935060ff1681518110151562000b9657fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8581151562000bd357fe5b04945062000b40565b5b505050919050565b6000600062000c0762000eaf64010000000002620019b2176401000000009004565b91506000600060006000600060006000898b8a2f90505b50505050565b600060016000836000191660001916815260200190815260200160002054141562000ca2576001600160008360001916600019168152602001908152602001600020819055506000805480600101828162000c809190620010f1565b916000526020600020900160005b839091909150906000191690555062000ccd565b6001600160008360001916600019168152602001908152602001600020600082825401925050819055505b62000e5c62000e426001600084600019166000191681526020019081526020016000205462000e25604060405190810160405280600781526020017f20636f756e743a0000000000000000000000000000000000000000000000000081525062000e0862000d4f8762000eb96401000000000262000b44176401000000009004565b62000deb606060405190810160405280602b81526020017f5b436f6e73656e737573436f6e74726f6c5d28696e20636f6e7472616374292081526020017f6164644e6f64655072693a00000000000000000000000000000000000000000081525062000dce620007e064010000000002620014ba176401000000009004565b6200071064010000000002620014d2179091906401000000009004565b6200071064010000000002620014d2179091906401000000009004565b6200071064010000000002620014d2179091906401000000009004565b620007536401000000000262001503179091906401000000009004565b620007b4640100000000026200153c176401000000009004565b5b50565b60005b60208210151562000e8b57825184526020840193506020830192505b60208203915062000e63565b6001826020036101000a039050801983511681855116818117865250505b50505050565b6000601090505b90565b62000ec3620010dd565b62000ecd62001120565b60006000600062000edd62001120565b602060405180591062000eed5750595b908082528060200260200182016040525b50945060009350600092505b602083101562000fcd578260080260020a876001900402600102915060007f010000000000000000000000000000000000000000000000000000000000000002827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151562000fbe5781858581518110151562000f8557fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535083806001019450505b5b828060010193505062000f0a565b8360405180591062000fdc5750595b908082528060200260200182016040525b509050600092505b83831015620010a65784838151811015156200100d57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000281848151811015156200106757fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b828060010193505062000ff5565b8095505b5050505050919050565b604060405190810160405280600063ffffffff168152602001620010d762001134565b81525090565b602060405190810160405280600081525090565b8154818355818115116200111b578183600052602060002091820191016200111a919062001148565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b6200116d91905b80821115620011695760008160009055506001016200114f565b5090565b90565b61204580620011806000396000f300606060405236156100c3576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806315995807146100c55780631775469f146100ef5780632e77b5fc1461012b578063446a1fe1146101dc5780634ef4f3091461028757806353006dde146102fd5780636cfc90761461037257806388fb0579146103ae578063adc48fa1146103ea578063b372efc31461049f578063c6a7e8481461056a578063dbdfe920146105c1578063e0dac3a5146105f9575bfe5b34156100cd57fe5b6100d5610631565b604051808215151515815260200191505060405180910390f35b34156100f757fe5b61010d6004808035906020019091905050610852565b60405180826000191660001916815260200191505060405180910390f35b341561013357fe5b6101c6600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610877565b6040518082815260200191505060405180910390f35b34156101e457fe5b6101fe600480803560001916906020019091905050610b44565b604051808060200182810382528381815181526020019150805190602001908083836000831461024d575b80518252602083111561024d57602082019150602081019050602083039250610229565b505050905090810190601f1680156102795780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561028f57fe5b6102df600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610d2f565b60405180826000191660001916815260200191505060405180910390f35b341561030557fe5b61030d610d60565b604051808060200182810382528381815181526020019150805190602001906020028083836000831461035f575b80518252602083111561035f5760208201915060208101905060208303925061033b565b5050509050019250505060405180910390f35b341561037a57fe5b610394600480803560001916906020019091905050610dc3565b604051808215151515815260200191505060405180910390f35b34156103b657fe5b6103d0600480803560001916906020019091905050611063565b604051808215151515815260200191505060405180910390f35b34156103f257fe5b610485600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611090565b604051808215151515815260200191505060405180910390f35b34156104a757fe5b6104e160048080610800019060408060200260405190810160405280929190826040602002808284378201915050505050919050506110a8565b6040518080602001828103825283818151815260200191508051906020019080838360008314610530575b8051825260208311156105305760208201915060208101905060208303925061050c565b505050905090810190601f16801561055c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561057257fe5b6105a76004808035906020019082018035906020019190919290803590602001908201803590602001919091929050506112a2565b604051808215151515815260200191505060405180910390f35b34156105c957fe5b6105e360048080356000191690602001909190505061147c565b6040518082815260200191505060405180910390f35b341561060157fe5b61061b6004808035600019169060200190919050506114a2565b6040518082815260200191505060405180910390f35b600060006106ab606060405190810160405280602781526020017f5b436f6e73656e737573436f6e74726f6c5d202063757272656e74206167656e81526020017f63794c6973743a0000000000000000000000000000000000000000000000000081525061069d6114ba565b6114d290919063ffffffff16565b50600090505b6000805490508110156108495761083b610836600160006000858154811015156106d757fe5b906000526020600020900160005b50546000191660001916815260200190815260200160002054610828604060405190810160405280600181526020017f3a0000000000000000000000000000000000000000000000000000000000000081525061081a61076260008881548110151561074d57fe5b906000526020600020900160005b5054610b44565b61080c604060405190810160405280600181526020017f3a000000000000000000000000000000000000000000000000000000000000008152506107fe8a6107f0604060405190810160405280601381526020017f5b436f6e73656e737573436f6e74726f6c5d20000000000000000000000000008152506107e26114ba565b6114d290919063ffffffff16565b61150390919063ffffffff16565b6114d290919063ffffffff16565b6114d290919063ffffffff16565b6114d290919063ffffffff16565b61150390919063ffffffff16565b61153c565b5b80806001019150506106b1565b600191505b5090565b60008181548110151561086157fe5b906000526020600020900160005b915090505481565b60006108816119bc565b6108896119bc565b600060008693508592508351915081835110156108a557825191505b600090505b81811015610aea5782818151811015156108c057fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110151561093b57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191610156109d6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9450610b3a565b82818151811015156109e457fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181101515610a5f57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161115610adb5760019450610b3a565b5b5b80806001019150506108aa565b825184511015610b1c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9450610b3a565b825184511115610b2f5760019450610b3a565b60009450610b3a565b5b5b5050505092915050565b610b4c6119d0565b610b546119bc565b600060006000610b626119bc565b6020604051805910610b715750595b908082528060200260200182016040525b50945060009350600092505b6020831015610c4d578260080260020a876001900402600102915060007f010000000000000000000000000000000000000000000000000000000000000002827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610c3f57818585815181101515610c0657fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535083806001019450505b5b8280600101935050610b8e565b83604051805910610c5b5750595b908082528060200260200182016040525b509050600092505b83831015610d21578483815181101515610c8a57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028184815181101515610ce357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b8280600101935050610c74565b8095505b5050505050919050565b6000610d396119bc565b829050600081511415610d525760006001029150610d5a565b602083015191505b50919050565b610d686119e4565b6000805480602002602001604051908101604052809291908181526020018280548015610db857602002820191906000526020600020905b81546000191681526020019060010190808311610da0575b505050505090505b90565b600060006000610dd284611552565b1515610de1576000925061105c565b6001600085600019166000191681526020019081526020016000205491506000821415610e11576001925061105c565b8180600190039250506000821115610e48578160016000866000191660001916815260200190815260200160002081905550610f70565b60016000856000191660001916815260200190815260200160002060009055600090505b600080549050811015610eba578360001916600082815481101515610e8d57fe5b906000526020600020900160005b5054600019161415610eac57610eba565b5b8080600101915050610e6c565b600080549050811015610f6f575b600160008054905003811015610f2e57600060018201815481101515610eea57fe5b906000526020600020900160005b5054600082815481101515610f0957fe5b906000526020600020900160005b5081600019169055505b8080600101915050610ec8565b6000600160008054905003815481101515610f4557fe5b906000526020600020900160005b50600090556000805480919060019003610f6d91906119f8565b505b5b61105761105260016000876000191660001916815260200190815260200160002054611044604060405190810160405280600781526020017f20636f756e743a00000000000000000000000000000000000000000000000000815250611036610fd88a610b44565b611028604060405190810160405280601b81526020017f5b436f6e73656e737573436f6e74726f6c5d2064656c4e6f64653a000000000081525061101a6114ba565b6114d290919063ffffffff16565b6114d290919063ffffffff16565b6114d290919063ffffffff16565b61150390919063ffffffff16565b61153c565b600192505b5050919050565b600061106e8261155e565b151561107d576000905061108b565b6110868261156a565b600190505b919050565b6000600061109e8484610877565b1490505b92915050565b6110b06119d0565b6110b86119bc565b600060006110c46119bc565b60406040518059106110d35750595b908082528060200260200182016040525b50935060009250600091505b60408210156111c15760007f010000000000000000000000000000000000000000000000000000000000000002868360408110151561112b57fe5b60200201517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415156111b357858260408110151561116757fe5b6020020151848481518110151561117a57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535082806001019350505b5b81806001019250506110f0565b826040518059106111cf5750595b908082528060200260200182016040525b509050600091505b828210156112955783828151811015156111fe57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002818381518110151561125757fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b81806001019250506111e8565b8094505b50505050919050565b60006000600061133b61133688889050611328606060405190810160405280602d81526020017f5b436f6e73656e737573436f6e74726f6c5d20636f6e74726f6c20737461727481526020017f20696e666f2e6c656e6774683a0000000000000000000000000000000000000081525061131a611720565b6114d290919063ffffffff16565b61150390919063ffffffff16565b61153c565b60009150600090505b868690508110156113c257600060016000898985818110151561136357fe5b90506020020135600019166000191660001916815260200190815260200160002054141580156113a857506000858583818110151561139e57fe5b9050602002013514155b156113b4576001820191505b5b8080600101915050611344565b61145261144d8361143f606060405190810160405280602181526020017f5b436f6e73656e737573436f6e74726f6c5d20636f6e74726f6c20636f756e7481526020017f3a00000000000000000000000000000000000000000000000000000000000000815250611431611720565b6114d290919063ffffffff16565b61150390919063ffffffff16565b61153c565b6000805490508210156114685760009250611472565b60019250611472565b5b5050949350505050565b60006001600083600019166000191681526020019081526020016000205490505b919050565b60016020528060005260406000206000915090505481565b6114c2611a24565b6114cc6080611738565b90505b90565b6114da611a24565b6114f182846020015161178390919063ffffffff16565b83602001819052508290505b92915050565b61150b611a24565b61152a611517836117ee565b846020015161178390919063ffffffff16565b83602001819052508290505b92915050565b61154e8160000151826020015161193c565b5b50565b6000600190505b919050565b6000600190505b919050565b60006001600083600019166000191681526020019081526020016000205414156115e457600160016000836000191660001916815260200190815260200160002081905550600080548060010182816115c39190611a4b565b916000526020600020900160005b839091909150906000191690555061160f565b6001600160008360001916600019168152602001908152602001600020600082825401925050819055505b61171c61171760016000846000191660001916815260200190815260200160002054611709604060405190810160405280600781526020017f20636f756e743a000000000000000000000000000000000000000000000000008152506116fb61167787610b44565b6116ed606060405190810160405280602b81526020017f5b436f6e73656e737573436f6e74726f6c5d28696e20636f6e7472616374292081526020017f6164644e6f64655072693a0000000000000000000000000000000000000000008152506116df6114ba565b6114d290919063ffffffff16565b6114d290919063ffffffff16565b6114d290919063ffffffff16565b61150390919063ffffffff16565b61153c565b5b50565b611728611a24565b6117326004611738565b90505b90565b611740611a24565b611748611a24565b82816000019063ffffffff16908163ffffffff1681525050602060405190810160405280600081525081602001819052508091505b50919050565b61178b6119d0565b60006000600084518651016040518059106117a35750595b908082528060200260200182016040525b5093506020860192506020850191506020840190506117d581848851611965565b6117e486518201838751611965565b5b50505092915050565b6117f66119d0565b600060006000600085141561184357604060405190810160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509350611934565b600092508491505b600082111561187057600a8281151561186057fe5b049150828060010193505061184b565b8260ff166040518059106118815750595b908082528060200260200182016040525b5093506001830390505b6000851115611933576030600a868115156118b357fe5b06017f01000000000000000000000000000000000000000000000000000000000000000284828060019003935060ff168151811015156118ef57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8581151561192b57fe5b04945061189c565b5b505050919050565b600060006119486119b2565b91506000600060006000600060006000898b8a2f90505b50505050565b60005b60208210151561198e57825184526020840193506020830192505b602082039150611968565b6001826020036101000a039050801983511681855116818117865250505b50505050565b6000601090505b90565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b815481835581811511611a1f57818360005260206000209182019101611a1e9190611a77565b5b505050565b604060405190810160405280600063ffffffff168152602001611a45611a9c565b81525090565b815481835581811511611a7257818360005260206000209182019101611a719190611a77565b5b505050565b611a9991905b80821115611a95576000816000905550600101611a7d565b5090565b90565b602060405190810160405280600081525090565b6000600060008373ffffffffffffffffffffffffffffffffffffffff16141515611e0d57611b52611b4d606060405190810160405280602c81526020017f5b436f6e73656e737573436f6e74726f6c5d2073797374656d50726f7879206c81526020017f6f61642073756363657373210000000000000000000000000000000000000000815250611b3f6114ba565b6114d290919063ffffffff16565b61153c565b8291508173ffffffffffffffffffffffffffffffffffffffff16631a129c016000604051606001526040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180806020018281038252600a8152602001807f4e6f6465416374696f6e00000000000000000000000000000000000000000000815250602001915050606060405180830381600087803b1515611bfa57fe5b6102c65a03f11515611c0857fe5b505050604051805190602001805190602001805190505050905060008173ffffffffffffffffffffffffffffffffffffffff16141515611cce57611cc0611cbb606060405190810160405280602b81526020017f5b436f6e73656e737573436f6e74726f6c5d204e6f6465416374696f6e206c6f81526020017f6164207375636365737321000000000000000000000000000000000000000000815250611cad6114ba565b6114d290919063ffffffff16565b61153c565b611cc981611ebc565b611d73565b611d72611d6d608060405190810160405280604181526020017f5b436f6e73656e737573436f6e74726f6c5d204e6f6465416374696f6e206c6f81526020017f6164206661696c656421206d617920626520612077726f6e672061646472657381526020017f7300000000000000000000000000000000000000000000000000000000000000815250611d5f612001565b6114d290919063ffffffff16565b61153c565b5b611e08611e03600080549050611df5606060405190810160405280603481526020017f5b436f6e73656e737573436f6e74726f6c5d20696e69742061676e656379206681526020017f696e6973682e2063757272656e742073697a653a000000000000000000000000815250611de76114ba565b6114d290919063ffffffff16565b61150390919063ffffffff16565b61153c565b611eb2565b611eb1611eac608060405190810160405280604281526020017f5b436f6e73656e737573436f6e74726f6c5d2073797374656d50726f7879206c81526020017f6f6164206661696c656421206d617920626520612077726f6e6720616464726581526020017f7373000000000000000000000000000000000000000000000000000000000000815250611e9e612001565b6114d290919063ffffffff16565b61153c565b5b5b505050565b5b50565b600060006000839250600091505b8273ffffffffffffffffffffffffffffffffffffffff16638fbfa12d6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050602060405180830381600087803b1515611f3657fe5b6102c65a03f11515611f4457fe5b50505060405180519050821015611ffa578273ffffffffffffffffffffffffffffffffffffffff166377fa37c7836000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515611fc957fe5b6102c65a03f11515611fd757fe5b505050604051805190509050611fec8161156a565b5b8180600101925050611eca565b5b50505050565b612009611a24565b6120136010611738565b90505b905600a165627a7a723058209bae431b7ae6b163529e083a9d55e656a351923843f156a4055ff365a1dbab230029";

    private ConsensusControl(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit, Boolean isInitByName) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit, isInitByName);
        if(EncryptType.encryptType == 1) super.setContractBinary(GUOMI_BINARY);
    }

    private ConsensusControl(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit, Boolean isInitByName) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit, isInitByName);
        if(EncryptType.encryptType == 1) super.setContractBinary(GUOMI_BINARY);
    }

    private ConsensusControl(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit, false);
        if(EncryptType.encryptType == 1) super.setContractBinary(GUOMI_BINARY);
    }

    private ConsensusControl(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit, false);
        if(EncryptType.encryptType == 1) super.setContractBinary(GUOMI_BINARY);
    }

    public static List<LogMessageEventResponse> getLogMessageEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("LogMessage", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Utf8String>() {}));
        List<EventValues> valueList = extractEventParameters(event, transactionReceipt);
        ArrayList<LogMessageEventResponse> responses = new ArrayList<LogMessageEventResponse>(valueList.size());
        for (EventValues eventValues : valueList) {
            LogMessageEventResponse typedResponse = new LogMessageEventResponse();
            typedResponse.addr = (Address) eventValues.getNonIndexedValues().get(0);
            typedResponse.code = (Uint256) eventValues.getNonIndexedValues().get(1);
            typedResponse.msg = (Utf8String) eventValues.getNonIndexedValues().get(2);
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<LogMessageEventResponse> logMessageEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("LogMessage", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Utf8String>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, LogMessageEventResponse>() {
            @Override
            public LogMessageEventResponse call(Log log) {
                EventValues eventValues = extractEventParameters(event, log);
                LogMessageEventResponse typedResponse = new LogMessageEventResponse();
                typedResponse.addr = (Address) eventValues.getNonIndexedValues().get(0);
                typedResponse.code = (Uint256) eventValues.getNonIndexedValues().get(1);
                typedResponse.msg = (Utf8String) eventValues.getNonIndexedValues().get(2);
                return typedResponse;
            }
        });
    }

    public Future<Utf8String> byte64ToString(StaticArray<Bytes1> x) {
        Function function = new Function("byte64ToString", 
                Arrays.<Type>asList(x), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Uint256> agencyCountMap(Bytes32 param0) {
        Function function = new Function("agencyCountMap", 
                Arrays.<Type>asList(param0), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<TransactionReceipt> compare(Utf8String _a, Utf8String _b) {
        Function function = new Function("compare", Arrays.<Type>asList(_a, _b), Collections.<TypeReference<?>>emptyList());
        return executeTransactionAsync(function);
    }

    public void compare(Utf8String _a, Utf8String _b, TransactionSucCallback callback) {
        Function function = new Function("compare", Arrays.<Type>asList(_a, _b), Collections.<TypeReference<?>>emptyList());
        executeTransactionAsync(function, callback);
    }

    public Future<TransactionReceipt> equal(Utf8String _a, Utf8String _b) {
        Function function = new Function("equal", Arrays.<Type>asList(_a, _b), Collections.<TypeReference<?>>emptyList());
        return executeTransactionAsync(function);
    }

    public void equal(Utf8String _a, Utf8String _b, TransactionSucCallback callback) {
        Function function = new Function("equal", Arrays.<Type>asList(_a, _b), Collections.<TypeReference<?>>emptyList());
        executeTransactionAsync(function, callback);
    }

    public Future<Bool> control(DynamicArray<Bytes32> info, DynamicArray<Uint256> num) {
        Function function = new Function("control", 
                Arrays.<Type>asList(info, num), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Uint256> lookupAgencyCount(Bytes32 agency) {
        Function function = new Function("lookupAgencyCount", 
                Arrays.<Type>asList(agency), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<TransactionReceipt> addNode(Bytes32 agency) {
        Function function = new Function("addNode", Arrays.<Type>asList(agency), Collections.<TypeReference<?>>emptyList());
        return executeTransactionAsync(function);
    }

    public void addNode(Bytes32 agency, TransactionSucCallback callback) {
        Function function = new Function("addNode", Arrays.<Type>asList(agency), Collections.<TypeReference<?>>emptyList());
        executeTransactionAsync(function, callback);
    }

    public Future<Bool> printCurrentStateInLog() {
        Function function = new Function("printCurrentStateInLog", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Utf8String> bytes32ToString(Bytes32 x) {
        Function function = new Function("bytes32ToString", 
                Arrays.<Type>asList(x), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<Bytes32> agencyList(Uint256 param0) {
        Function function = new Function("agencyList", 
                Arrays.<Type>asList(param0), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bytes32>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<TransactionReceipt> stringToBytes32(Utf8String source) {
        Function function = new Function("stringToBytes32", Arrays.<Type>asList(source), Collections.<TypeReference<?>>emptyList());
        return executeTransactionAsync(function);
    }

    public void stringToBytes32(Utf8String source, TransactionSucCallback callback) {
        Function function = new Function("stringToBytes32", Arrays.<Type>asList(source), Collections.<TypeReference<?>>emptyList());
        executeTransactionAsync(function, callback);
    }

    public Future<DynamicArray<Bytes32>> lookupAgencyList() {
        Function function = new Function("lookupAgencyList", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Bytes32>>() {}));
        return executeCallSingleValueReturnAsync(function);
    }

    public Future<TransactionReceipt> delNode(Bytes32 agency) {
        Function function = new Function("delNode", Arrays.<Type>asList(agency), Collections.<TypeReference<?>>emptyList());
        return executeTransactionAsync(function);
    }

    public void delNode(Bytes32 agency, TransactionSucCallback callback) {
        Function function = new Function("delNode", Arrays.<Type>asList(agency), Collections.<TypeReference<?>>emptyList());
        executeTransactionAsync(function, callback);
    }

    public static Future<ConsensusControl> deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit, BigInteger initialWeiValue, Address systemAddr) {
        String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.<Type>asList(systemAddr));
        if(EncryptType.encryptType == 1) setBinary(getGuomiBinary());
        return deployAsync(ConsensusControl.class, web3j, credentials, gasPrice, gasLimit, BINARY, encodedConstructor, initialWeiValue);
    }

    public static Future<ConsensusControl> deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit, BigInteger initialWeiValue, Address systemAddr) {
        String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.<Type>asList(systemAddr));
        if(EncryptType.encryptType == 1) setBinary(getGuomiBinary());
        return deployAsync(ConsensusControl.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, encodedConstructor, initialWeiValue);
    }

    public static ConsensusControl load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new ConsensusControl(contractAddress, web3j, credentials, gasPrice, gasLimit, false);
    }

    public static ConsensusControl load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new ConsensusControl(contractAddress, web3j, transactionManager, gasPrice, gasLimit, false);
    }

    public static ConsensusControl loadByName(String contractName, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new ConsensusControl(contractName, web3j, credentials, gasPrice, gasLimit, true);
    }

    public static ConsensusControl loadByName(String contractName, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new ConsensusControl(contractName, web3j, transactionManager, gasPrice, gasLimit, true);
    }

    public static void setBinary(String binary) {
        BINARY = binary;
    }

    public static String getGuomiBinary() {
        return GUOMI_BINARY;
    }

    public static class LogMessageEventResponse {
        public Address addr;

        public Uint256 code;

        public Utf8String msg;
    }
}
